/* Controlador para la informacion de negocio
 Creado por Carlos Pastelin Morales 
 29/12/2014 */
package Controlador;

import Modelo.INFONEGOCIO;
import Vistas.AgregarInfoNegocio;
import Vistas.factura;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class SrvINFONEGOCIO extends JFrame {
    /*Iniciamos las variables a utilizar*/
    INFONEGOCIO modelo = new INFONEGOCIO();//C.P.M Instanciamos el modelos
    private AgregarInfoNegocio vista;//C.P.M Agregamos un variable con la vista de la forma que tendra aceso
    private factura vistafactura;//C.P.M Agregamos un variable con la vista de factura debido aque tambien consumira recursos
    private ResultSet rs;//C.P.M Agregamos un variable para atrapar los resultados del modelo
    private String Error = "";//C.P.M Una variable para atrapar los errores y los llamados

    public SrvINFONEGOCIO(AgregarInfoNegocio view) {//C.P.M Tendremos un constructor con la vista de agregar informacion de negocio
        this.vista = view;//C.P.M Se la agregamos a la variable para tener acceso a la vista 
    }

    public SrvINFONEGOCIO(factura view) {//C.P.M Factura tambien utiliza recursos de el controlador por lo cual tambien tiene su constructor
        this.vistafactura = view;//C.P.M y le pasamos la vista a la variable para tener acceso
    }
/*Este es el metodo para insertar informacion de negocio*/
    public void insertar() {
        if (vista.jTNombreempresa.getText().equals("") || vista.jTTelefono.getText().equals("") || vista.jTRFC.getText().equals("") || vista.jTDireccion.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "Faltan Datos: No puedes dejar cuadros en blanco");//C.P.M  Verificamos si las casillas esta vacia si es asi lo notificamos
        } else {//C.P.M  de lo contrario prosegimos
            modelo.setNombre(vista.jTNombreempresa.getText());//C.P.M mandamos las variabes al modelo 
            modelo.setDireccion(vista.jTDireccion.getText());
            modelo.setRfc(vista.jTRFC.getText());
            modelo.setTelefono(vista.jTTelefono.getText());
            
            Error = modelo.insertar();//C.P.M  Ejecutamos el metodo del modelo 
            if (Error.equals("")) {//C.P.M Si el modelo no regresa un error es que todo salio bien
                JOptionPane.showMessageDialog(null, "Se guardo exitosamente la configuracion");//C.P.M  notificamos a el usuario
                vista.dispose();//C.P.M  y cerramos la vista
            } else {//C.P.M de lo contrario 
                JOptionPane.showMessageDialog(null, Error);//C.P.M  notificamos a el usuario el error
            }
        }
    }
/*Metodo para poblar la informacion de negocio*/
    public void PoblarINFO(String llamado) {//C.P.M Aqui llega como argumento llamado
        try {
            rs = modelo.Obteninfo();//C.P.M Mandamos a poblar la informacion de negocio
            if (llamado.equals("")) {//C.P.M  si el llamado llega vacio es que viene de la interface
                while (rs.next()) {//C.P.M recorremos el resultado para obtener los datos
                    vista.jTNombreempresa.setText(rs.getString(1));//C.P.M  los datos los enviamos a la vista de la interface
                    vista.jTDireccion.setText(rs.getString(2));
                    vista.jTTelefono.setText(rs.getString(3));
                    vista.jTRFC.setText(rs.getString(4));
                }
            }
            if (llamado.equals("factura")) {//C.P.M  de lo contrario es llamado de factura y los valores se van a la vista de vactura 
                while (rs.next()) {//C.P.M  recorremos el resultado 
                    vistafactura.jTNombreempresa.setText(rs.getString(1));//C.P.M  enviamos los datos a la vista de factura
                    vistafactura.jTDireccion.setText(rs.getString(2));
                    vistafactura.jTTelefono.setText(rs.getString(3));
                    vistafactura.jTRFC.setText(rs.getString(4));
                }
            }
        } catch (SQLException ex) {//C.P.M Notificamos a el usuario si ocurre algun error
            JOptionPane.showMessageDialog(null,"Ocurio un error al intentar consultar la informacion del negocio");
        }
    }
/*Metodo la modificar la informacion de negocio*/
    public void modificar() {
        if (vista.jTNombreempresa.getText().equals("") || vista.jTTelefono.getText().equals("") || vista.jTRFC.getText().equals("") || vista.jTDireccion.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "Faltan Datos: No puede dejar cuadros en blanco");//C.P.M  Verificamos que todas las casillas esten llenas de lo contrario lo notificamos a el usuario
        } else {//C.P.M  de lo contrario todo esta bien y prosegimos
            modelo.setNombre(vista.jTNombreempresa.getText());//C.P.M mandamos al modelo la informacion
            modelo.setDireccion(vista.jTDireccion.getText());
            modelo.setRfc(vista.jTRFC.getText());
            modelo.setTelefono(vista.jTTelefono.getText());
            
            Error = modelo.modificar();//C.P.M ejecutamos la funcion modificar del modelo y esperamos algun error
            if (Error.equals("")) {//C.P.M si el error viene vacio es que no ocurrio algun error 
                JOptionPane.showMessageDialog(null, "La configuracion se modifico correctamente");
            } else {//C.P.M  de lo contrario lo notificamos a el usuario
                JOptionPane.showMessageDialog(null, Error);
            }
        }
    }
}
